﻿#ifndef DOU_GPU_INSTANCING_ARMY_LINE
#define DOU_GPU_INSTANCING_ARMY_LINE

float4 lineVertices[4]; // 顶点
float lineIndex[6]; // 索引
float4 lineUV[4]; // UV

float4x4 trsArr[128]; // 传入的矩阵信息
float4 colorArr[128]; // 传入的颜色信息

float4x4 GetLineTrs(const int instanceID)
{
    return trsArr[instanceID];
}

// 获取世界坐标下的顶点位置
float4 GetLinePos(const int instanceID, const int vertexID)
{
    const int index = lineIndex[vertexID];
    const float4 vertex = lineVertices[index];
    const float4x4 trs = trsArr[instanceID];
    return mul(trs, vertex);
}

float2 GetLineUV(const int vertexID)
{
    const int index = lineIndex[vertexID];
    return lineUV[index].xy;
}

float4 GetLineColor(const int instanceID)
{
    return colorArr[instanceID];
}

#endif